from FlaskServer import app
import sqlite3
from flask import g

def connect_db():
    """用于连接数据库,返回一个数据库对象"""
    rv = sqlite3.connect(app.config['DATABASE'])  # app.config['DATABASE'] 是是数据库的路径
    rv.row_factory = sqlite3.Row
    return rv

def get_db():
    """首次调用的时候会为当前环境创建一个数据库连接，后继调用返回已经建立好的连接"""
    if not hasattr(g, 'sqlite_db'):   # 用到了反射
        g.sqlite_db = connect_db()
    return g.sqlite_db

@app.teardown_appcontext
def close_db(error):
    """在请求结束后关闭数据库"""
    if hasattr(g, 'sqlite_db'):   # 用到了反射
        g.sqlite_db.close()


def init_db():
    """初始化数据库"""
    db = get_db()
    with app.open_resource('schema.sql', mode='r') as f:
        db.cursor().executescript(f.read())
        print(f.read())
    db.commit()